#pragma once
#include <interface/Sxml-i.h>

void Exp_IXml(qjsbind::Module* module)
{
	{
		JsClass<IXmlAttr> jsCls = module->ExportClass<IXmlAttr>("IXmlAttr");
		jsCls.Init(JsClass<IObjRef>::class_id());
		jsCls.AddFunc( "GetPrivPtr", &IXmlAttr::GetPrivPtr);
		jsCls.AddFunc( "Empty", &IXmlAttr::Empty);
		jsCls.AddFunc( "Name", &IXmlAttr::Name);
		jsCls.AddFunc( "Value", &IXmlAttr::Value);
		jsCls.AddFunc( "set_userdata", &IXmlAttr::set_userdata);
		jsCls.AddFunc( "get_userdata", &IXmlAttr::get_userdata);
		jsCls.AddFunc( "Next", &IXmlAttr::Next);
		jsCls.AddFunc( "Prev", &IXmlAttr::Prev);
	}
	{
		JsClass<IXmlNode> jsCls = module->ExportClass<IXmlNode>("IXmlNode");
		jsCls.Init(JsClass<IObjRef>::class_id());
		jsCls.AddFunc("ToString", &IXmlNode::ToString);
		jsCls.AddFunc("GetPrivPtr", &IXmlNode::GetPrivPtr);
		jsCls.AddFunc("Empty", &IXmlNode::Empty);
		jsCls.AddFunc("Name", &IXmlNode::Name);
		jsCls.AddFunc("Value", &IXmlNode::Value);
		jsCls.AddFunc("set_userdata", &IXmlNode::set_userdata);
		jsCls.AddFunc("get_userdata", &IXmlNode::get_userdata);

		jsCls.AddFunc("Attribute", &IXmlNode::Attribute);
		jsCls.AddFunc("FirstAttribute", &IXmlNode::FirstAttribute);
		jsCls.AddFunc("LastAttribute", &IXmlNode::LastAttribute);

		jsCls.AddFunc("Child", &IXmlNode::Child);
		jsCls.AddFunc("FirstChild", &IXmlNode::FirstChild);
		jsCls.AddFunc("LastChild", &IXmlNode::LastChild);

		jsCls.AddFunc("NextSibling", &IXmlNode::NextSibling);
		jsCls.AddFunc("PrevSibling", &IXmlNode::PrevSibling);

		jsCls.AddFunc("NextSibling2", &IXmlNode::NextSibling2);
		jsCls.AddFunc("PrevSibling2", &IXmlNode::PrevSibling2);
	}
	{
		JsClass<IXmlDoc> jsCls = module->ExportClass<IXmlDoc>("IXmlDoc");
		jsCls.Init(JsClass<IObjRef>::class_id());
		jsCls.AddFunc( "GetPrivPtr", &IXmlDoc::GetPrivPtr);

		jsCls.AddFunc( "Reset", &IXmlDoc::Reset);
		jsCls.AddFunc( "Copy", &IXmlDoc::Copy);
		jsCls.AddFunc( "LoadString", &IXmlDoc::LoadString);
		jsCls.AddFunc( "LoadFileA", &IXmlDoc::LoadFileA);
		jsCls.AddFunc( "LoadFileW", &IXmlDoc::LoadFileW);
		jsCls.AddFunc( "LoadBuffer", &IXmlDoc::LoadBuffer);
		jsCls.AddFunc( "LoadBufferInplace", &IXmlDoc::LoadBufferInplace);

		jsCls.AddFunc( "LoadBufferInplaceOwn", &IXmlDoc::LoadBufferInplaceOwn);
		jsCls.AddFunc( "GetParseResult", &IXmlDoc::GetParseResult);
		jsCls.AddFunc( "SaveBinary", &IXmlDoc::SaveBinary);
		jsCls.AddFunc( "SaveFileA", &IXmlDoc::SaveFileA);
		jsCls.AddFunc( "SaveFileW", &IXmlDoc::SaveFileW);

		jsCls.AddFunc( "Root", &IXmlDoc::Root);
	}


}
